<?php
	/**
	 * Created by PhpStorm.
	 * User: mybook-lhp
	 * Date: 18/5/7
	 * Time: 下午5:27
	 */

	namespace plugins\TencentSms\utils;
	class UtilSmsSender
	{
		function getRandom()
		{
			return rand(100000, 999999);
		}

		function calculateSig($appkey, $random, $curTime, $phoneNumbers)
		{
			$phoneNumbersString = $phoneNumbers[0];
			for ($i = 1; $i < count($phoneNumbers); $i ++)
			{
				$phoneNumbersString .= ("," . $phoneNumbers[$i]);
			}
			return hash("sha256", "appkey=" . $appkey . "&random=" . $random
				. "&time=" . $curTime . "&mobile=" . $phoneNumbersString);
		}

		function calculateSigForTemplAndPhoneNumbers($appkey, $random, $curTime, $phoneNumbers)
		{
			$phoneNumbersString = $phoneNumbers[0];
			for ($i = 1; $i < count($phoneNumbers); $i ++)
			{
				$phoneNumbersString .= ("," . $phoneNumbers[$i]);
			}
			return hash("sha256", "appkey=" . $appkey . "&random=" . $random
				. "&time=" . $curTime . "&mobile=" . $phoneNumbersString);
		}

		function phoneNumbersToArray($nationCode, $phoneNumbers)
		{
			$i = 0;
			$tel = array();
			do
			{
				$telElement = new \stdClass();
				$telElement->nationcode = $nationCode;
				$telElement->mobile = $phoneNumbers[$i];
				array_push($tel, $telElement);
			} while (++ $i < count($phoneNumbers));
			return $tel;
		}

		function calculateSigForTempl($appkey, $random, $curTime, $phoneNumber)
		{
			$phoneNumbers = array($phoneNumber);
			return $this->calculateSigForTemplAndPhoneNumbers($appkey, $random, $curTime, $phoneNumbers);
		}

		function sendCurlPost($url, $dataObj)
		{
			$curl = curl_init();
			curl_setopt($curl, CURLOPT_URL, $url);
			curl_setopt($curl, CURLOPT_HEADER, 0);
			curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
			curl_setopt($curl, CURLOPT_POST, 1);
			curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($dataObj));
			curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
			curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
			$ret = curl_exec($curl);
			if (false == $ret)
			{
				// curl_exec failed
				$result = "{ \"result\":" . - 2 . ",\"errmsg\":\"" . curl_error($curl) . "\"}";
			} else
			{
				$rsp = curl_getinfo($curl, CURLINFO_HTTP_CODE);
				if (200 != $rsp)
				{
					$result = "{ \"result\":" . - 1 . ",\"errmsg\":\"" . $rsp . " " . curl_error($curl) . "\"}";
				} else
				{
					$result = $ret;
				}
			}
			curl_close($curl);
			return $result;
		}

	}